function lanceMAJ() {

	document.getElementById("body:maj-form:boutonGo").disabled = "disabled";
	document.getElementById("maj-resultats").innerHTML = "";
	
	var trigramme = document.getElementById("trigramme").innerHTML;
	var appliName = document.getElementById("appliName").value;
	
	var xhr_object = null;
	xhr_object = getXHRObject();
	
	if ( xhr_object == null ) 
		return false;

	var url = "/GP-TMA/servlets/DelfiSyncServlet?action=start&trigramme=" + trigramme + "&application=" + appliName;
	xhr_object.open("GET", url, true);
	
	xhr_object.onreadystatechange = function()
	{
		if ( xhr_object.readyState == 4 ) {
			var erreur = formateReponse(xhr_object.responseXML);
			if ( !erreur )
				setTimeout("progressUpdater()", 1000);	// dans 1 seconde, on met a jour l'avancement
		}
	}	 
		
	xhr_object.send(null);
	return true;
}

function progressUpdater() {

	var xhr_object = getXHRObject();
	if ( xhr_object == null ) {
		alert("dans progressUpdater, xhr_object == null");
	}
	
	xhr_object.open("GET", "/GP-TMA/servlets/DelfiSyncServlet?action=progress", true);
	
	xhr_object.onreadystatechange = function()
	{
		if ( xhr_object.readyState == 4 ) {
			var termine = formateReponse(xhr_object.responseXML);
			if ( !termine )
				setTimeout("progressUpdater()", 1000);
		}
	}
			
	xhr_object.send(null);
}

function formateReponse(responseXML) {
	
	var statut = responseXML.getElementsByTagName("statut")[0].firstChild.nodeValue;
	
	// Ces 3 cas ne se produisent que lorsqu'une requete de type "progress" est envoyee sur la servlet
	// un retour de false indique que la MAJ est en cours, et qu'il faudra renvoyer une requete
	// "progress" dans une seconde (setTimeout...). Si true est renvoye, alors la MAJ est terminee et on
	// ne renvoie plus de requete "progress".
	 
	if ( statut == "Demarrage" ) {
		afficheMessage("Demarrage de la MAJ", "info");
		return false;
	}
	else if ( statut == "En cours" ) {
		var nbDCCourante = responseXML.getElementsByTagName("nbDCCourante")[0].firstChild.nodeValue;
		var nbDCTrouvees = responseXML.getElementsByTagName("nbDCTrouvees")[0].firstChild.nodeValue;
		
		afficheMessage("En cours: " + nbDCCourante + "/" + nbDCTrouvees, "info");
		return false;
	}
	else if ( statut == "Termine" ) {
		
		var txt = "<h2 class=\"red\">R&eacute;sultats</h2>";
		
		txt += "<table><tr><td class=\"txtGras\">DC trait&eacute;es:</td><td>";
		txt += responseXML.getElementsByTagName("nbDCTrouvees")[0].firstChild.nodeValue;
		
		txt += "</td></tr><tr><td class=\"txtGras\">DE:</td><td>";
		txt += responseXML.getElementsByTagName("nbDE")[0].firstChild.nodeValue;
		
		txt += "</td></tr><tr><td class=\"txtGras\">RA:</td><td>";
		txt += responseXML.getElementsByTagName("nbRA")[0].firstChild.nodeValue;
		
		txt += "</td></tr><tr><td class=\"txtGras\">Nouvelles DC:</td><td>";
		txt += responseXML.getElementsByTagName("nbDCNouvelles")[0].firstChild.nodeValue;
		
		txt += "</td></tr><tr><td class=\"txtGras\">DC mises &agrave; jour:</td><td>";
		txt += responseXML.getElementsByTagName("nbDCMisesAJour")[0].firstChild.nodeValue;
		
		txt += "</td></tr><tr><td class=\"txtGras\">DC d&eacute;ja &agrave; jour avant l'op&eacute;ration:</td><td>";
		txt += responseXML.getElementsByTagName("nbDCDejaAjour")[0].firstChild.nodeValue;
		
		txt += "</td></tr><tr><td class=\"txtGras\">DC p&eacute;rim&eacute;es dans DELFI:</td><td>";
		txt += responseXML.getElementsByTagName("nbDCPerimees")[0].firstChild.nodeValue;
		
		txt += "</td></tr></table>";
		
		txt += "<br/>";
		
		document.getElementById("maj-resultats").innerHTML = txt;
		afficheMessage("MAJ terminee", "info");
		document.getElementById("body:maj-form:boutonGo").disabled = "";
		return true;
	}
	
	// Ces 2 cas ne se produisent que lorsqu'une requete "start" est envoyee sur la servlet
	// Un retour true equivaut a une erreur renvoyee lors de cette phase par la servlet
	else if ( statut == "Erreur" ) {
		afficheMessage("Impossible d'acceder a la base client, une mise-a-jour est peut-etre deja en cours", "erreur");
		document.getElementById("body:maj-form:boutonGo").disabled = "";
		return true;		// true donc on ne continue pas la proc?dure de MAJ
	}
	
	// Message XML envoye par le NotesExceptionManager
	else if ( statut == "Erreur librairie" ) {
		afficheMessage("Un probleme de chargement de librairie est apparu suite a un rechargement de contexte du serveur: redemarrez le serveur Tomcat svp.", "erreur");
		document.getElementById("body:maj-form:boutonGo").disabled = "";
		return true;		// true donc on ne continue pas la proc?dure de MAJ
	}
	
	// Message XML envoye par le NotesExceptionManager
	else if ( statut == "Erreur generale MAJ" ) {
		afficheMessage("Une erreur grave est apparue lors de la MAJ", "erreur");
		document.getElementById("body:maj-form:boutonGo").disabled = "";
		return true;		// true donc on ne continue pas la proc?dure de MAJ
	}
}




